1. Field of the Invention
The present invention relates, in general, to software package, application, and/or service distribution in a distributed computer network, and, more particularly, to a system and method for monitoring and providing services for client computer systems and/or receiving client subscription requests and for responding by delivering up-to-date versions of services, such as patches, operating system (OS) and software upgrades, training, and other services, to the client computer system for execution on the client computer system independent from a central service system and without a need for constant communications.
2. Relevant Background
Distributed computing environments in which decision making, file storage, and other network functions are not centralized but are found throughout the network are increasingly popular designs for network computing. For example, distributed computing environments are employed in many existing client-server systems and peer-to-peer architectures. During typical operations, a copy of a software program or an application (i.e., an application package such as Netscape™, StarOffice™, an operating system and the like) is distributed over a data communications network by a master or central network device for installation on client network devices that request or require the particular application package. In other words, the entire software package is downloaded on the client system and becomes resident in memory (e.g., a relatively permanent portion of the client system).
When an application, such as an operating system (OS), is updated with a new version or with patches to correct identified bugs, the updates may be installed manually at the client computer system with a set of update disks. Alternatively, a client-server communication link is established and the client requests the newer version or the software or application. In some cases, a master server provides ongoing monitoring utilizing an application installed and executing (i.e., resident) on the client device to determine when updates or patches may be beneficial. In response, the master server functions to distribute and install updated application packages through one or more intermediate distribution servers and over the communications network to the appropriate client network devices, i.e., the devices utilizing the updated application. The client network device may be an end user device, such as a personal computer, computer workstation, or any electronic computing device, or be an end user server that shares the application with a smaller, more manageable number of the end user devices within the distributed computer network.
While such distributed computer networks provide a number of operational benefits, distribution and installation of the updates and new versions of software and applications to these client network devices results in a number of operating inefficiencies and problems for both the clients and the service providers. For example, correcting a failed distribution typically requires the redistribution of the package to each of the devices that did not receive the package, e.g., all devices downstream in the network from an affected or faulting device or server. To be effective, the master server must be configured to assure use of the same installation parameters (i.e., the distribution command strings), the same distribution list, and the same packages. Servicing the network prior to redistribution and replicating the distribution process has been problematic and costly because the networks often include large numbers of client network devices, such as intermediate distribution servers, end user servers, and end user devices which often have to be accessed and serviced when distribution problems occur. In addition, these various devices may run with different operating systems, further complicating distribution and installation of software on the host device or system.
Another ongoing problem with existing distributed computer environments is how to complete the initial identification of updates and new versions of applications and software that should be installed on client devices. Tools have been developed for assisting an operator of a client device in analyzing their systems and selecting from available patches and upgrades, but these tools have a number of limitations. Typically, the tool includes code or software that has to be loaded and executed on the client device, i.e., that is a disk-resident application. The analysis tool often requires dedicated memory in the client system. The analysis tool is generally interactive and the client system operator typically must provide system data for proper functioning and client operator personnel need significant knowledge of their system hardware and software elements. Hence, existing tools are often out of date and are demanding on the time and expertise of the operator's information technology personnel and, at times, on the resources of the client system.
The expertise and time of the operator personnel is further taxed because in many patch assistance tools the personnel must manually select between or approve a number of recommended patches and/or versions for installation. Unfortunately, problems can arise if patches and/or versions of applications are selected that are incompatible. Additionally, with some patch selection tools, the operator must be careful to install the patches in a specific order to avoid harming the operation of their system. Hence, the present methods of finding and then selecting between located patches can be a labor-intensive task that relies on the expertise of client personnel to be effectively completed.
Downloading and installation of the selected patches, software upgrades, or new software applications can result in further problems for the operator and the service provider. Existing distributed computing environments typically rely on the client-server model of operation in which a communication link over a data communications network is first established and then messages are transmitted between the client device and a master or central server. The messages can be thought of as static messages, such as patch installation requests from the client and code to be installed. The master server and client must effectively translate the messages. The patch or application codes are distributed to the client device for installation (i.e., to become resident) on the client device. Installation is controlled by the master server but often requires significant support by personnel at the client facility. Another concern with installation is that the operator is usually forced to interrupt ongoing client device operations and to reboot their system after installation.
Hence, there remains a need for an improved, more robust method and system for distributing and installing software, applications, and operating systems or other services and corresponding upgrades and patches to client computer systems in a distributed computing environment. Preferably such an improved method and system would be useful for remotely and automatically delivering nearly any software or hardware service useful in networked computer systems in a manner that does not burden operators of client computer systems either by reducing system operation or resource availability or by increasing the demands on personnel time or for system and software expertise.